package com.example.lvsuo.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.lvsuo.entity.HrEmp;
import com.example.lvsuo.entity.SystemRole;
import com.example.lvsuo.entity.SystemUser;
import com.example.lvsuo.entity.SystemUserRole;
import com.example.lvsuo.entity.vo.SystemUserVo;
import com.example.lvsuo.mapper.SystemUserMapper;
import com.example.lvsuo.modal.Result;
import com.example.lvsuo.service.IHrEmpService;
import com.example.lvsuo.service.ISystemUserRoleService;
import com.example.lvsuo.service.ISystemUserService;
import com.example.lvsuo.utils.JwtUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 系统用户表，登录用的 前端控制器
 * </p>
 *
 * @author 心心念念
 * @since 2021-03-30
 */
@RestController
@RequestMapping("/systemUser")
public class SystemUserController {
    @Autowired
    ISystemUserService ss;



//    @GetMapping("/{id}")
//    public  void KSlogin(@PathVariable String id){ // 快速登录
//        //根据id查寻用户名密码
//        SystemUser systemUser = ss.KSlogin(id);
//        System.out.println("值"+systemUser);
////        JwtUtils.createToken();
//    }


    /**
     * 查询用户信息
     *
     * @param systemUserVo
     * @return
     */
    @GetMapping(params = {"biaoshi=1"})
    public Result getSystemUser(SystemUserVo systemUserVo) {
        PageHelper.startPage(systemUserVo.getPageId(),systemUserVo.getPageNum());
        PageInfo pageInfo = new PageInfo(ss.getSystemUser(systemUserVo));
        return Result.back("ok", "200", pageInfo);
    }

    /**
     * 修改
     * @param systemUservo
     * @return
     */
    @PutMapping(params = {"xiugai=1"})
    public Result updateSystemUser(@RequestBody SystemUserVo systemUservo){
        ss.updateSystemUserRole(systemUservo);
        return Result.back("ok","200");
    }

    /**
     * 根据id查询用户详情
     * @param id
     * @return
     */
    @GetMapping(params = {"biaoshi=3"})
    public Result getxiangqing(String id) {
        List<SystemUserVo> list = ss.getxiangqing(id);
        return Result.back("ok", "200", list);
    }

    /**
     * 根据id查询用户详情
     * @param id
     * @return
     */
    @GetMapping(params = {"biaoshi=4"})
    public Result getSystemUserRoleId(String id) {
        List<SystemUserVo> list = ss.getSystemUserRoleId(id);
        return Result.back("ok", "200", list);
    }


    /**
     * 添加
     *
     * @param systemUserVo
     * @return
     */
    @PostMapping
   public Result addSysUser(@RequestBody SystemUserVo systemUserVo) {
        System.out.println("值为==》"+systemUserVo);
        systemUserVo.setUserPwd(new BCryptPasswordEncoder().encode(systemUserVo.getUserPwd()));//密码加密
        ss.addSysUser(systemUserVo);
        return Result.back("ok", "200");
    }

    /**
     * 用户注册
     *
     * @param s
     * @return
     */
    @PostMapping("/add")
    Result add(SystemUser s) {
//        System.out.println("systemRoleId==>"+systemRoleId);
        s.setUserPwd(new BCryptPasswordEncoder().encode(s.getUserPwd()));
//        System.out.println("进入注册controller"+s);
        ss.save(s);


        return Result.back("成功");
    }

    /**
     * 修改登录次数
     *
     * @param s
     * @return
     */
    @PutMapping
    Result updateLoginNum(SystemUser s) {
        ss.upLoginNum(s);
        return Result.back("成功");
    }

    /**
     * 按照username查找用户
     *
     * @param s
     * @return
     */
    @GetMapping("/{user}")
    Result queryByUserName(@PathVariable("user") String s) {
        return Result.back(ss.list(new QueryWrapper<SystemUser>().eq("user_name", s)));
    }

    /**
     * 更换头像
     *
     * @param s
     * @return
     */
    @PutMapping("/upheadPortrait")
    Result upheadPortrait(SystemUser s) {
        ss.update(new UpdateWrapper<SystemUser>().eq("id", s.getId()).set("user_pre_date", s.getUserPreDate()));
        return Result.back("成功");
    }

    /**
     * 验证旧密码是否正确
     *
     * @param s
     * @return
     */
    @GetMapping
    Result queryByIdAndPass(SystemUser s) {
        List<SystemUser> list = ss.list(new QueryWrapper<SystemUser>().eq("id", s.getId()));
        boolean matches = new BCryptPasswordEncoder().matches(s.getUserPwd(), list.get(0).getUserPwd());
        return Result.back(matches);
    }

    @PutMapping("/upUserPwd")
    Result upUserPwd(SystemUser s) {
        ss.update(new UpdateWrapper<SystemUser>().eq("id", s.getId()).set("user_pwd", new BCryptPasswordEncoder().encode(s.getUserPwd())));
        return Result.back("成功");
    }
}

